/**
 *创建命令行参数输入名字的文件
 *存储用户输入的学生姓名 年龄和成绩
 */

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>

struct Student
{
    char name[20];
    int age;
    double score;
}stu={
    "张飞",
    18,88.88
};

int main(int argc,char* argv[])
{
    if (argc < 2)
    {
        printf("请输入文件名\n");
        exit(-1); //结束当前进程
    }

    int fd;
    fd =open(argv[1],O_WRONLY);

    //如果Linux操作系统上的函数 （System call系统调用） 执行失败，会自动把错误信息存放到操作系统的某个位置  可以直接用printf("%m")输出出来
    if (-1==fd)
    {
        printf("打开%s失败：%m\n",argv[1]);
        printf("尝试创建文件\n");
        //位运算相对比较精密
        fd =open(argv[1],O_WRONLY|O_CREAT,0666);
        if (-1==fd)
        {
            printf("创建%s失败：%m\n",argv[1]);
            exit(-1);
        }
        printf("创建文件成功\n");
    }
    printf("打开文件成功\n");
#if 0
    write(fd,(const char*)stu,sizeof(stu));
#    else

 write(fd,(const char*)stu.name,sizeof(stu.name));
    write(fd,(const char*)&stu.age,sizeof(stu.age));
    write(fd,(const char*)&stu.score,sizeof(stu.score));
#    endif
sleep(20);

close(fd);




}